package com.heima.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.common.dtos.PageResponseResult;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.wemedia.dtos.NewsAuthDto;
import com.heima.model.wemedia.dtos.WmNewsDto;
import com.heima.model.wemedia.dtos.WmNewsPageReqDto;
import com.heima.model.wemedia.pojos.WmNews;

/**
 * @author chenshan
 */
public interface NewsService extends IService<WmNews> {
    /**
     * 分页条件查询文章列表
     * @param dto 分页+条件
     * @return PageResponseResult
     */
    PageResponseResult newsList(WmNewsPageReqDto dto);

    /**
     * 自媒体端文章的发布功能
     * @param newsDto 文章信息
     * @return ResponseResult
     */
    ResponseResult newsSubmit(WmNewsDto newsDto, Boolean draft) throws Exception;

    /**
     * 延迟发布
     * @param news 文章
     */
    public void publishNewsToArticle(WmNews news);

    /**
     * 文章的立即审核
     * @param news 文章
     */
    public void newsContentDetect(WmNews news) throws Exception;

    /**
     * 文章的上架或下架
     * @param news 文章信息
     * @return ResponseResult
     */
    ResponseResult newsDownOrUp(WmNews news);

    /**
     * 查询自媒体文章列表
     * @param authDto 自媒体文章信息
     * @return ResponseResult
     */
    ResponseResult findAllNews(NewsAuthDto authDto);

    /**
     * 查询自媒体文章详情
     * @param id 自媒体文章id
     * @return ResponseResult
     */
    ResponseResult findNewById(Integer id);

    /**
     * 自媒体文章审核驳回
     * @param authDto 自媒体文章驳回信息
     * @return ResponseResult
     */
    ResponseResult authFailNews(NewsAuthDto authDto);

    /**
     * 自媒体文章审核通过
     * @param authDto 自媒体文章通过信息
     * @return ResponseResult
     */
    ResponseResult authPassNews(NewsAuthDto authDto);

    /**
     * 本地自定义敏感词校验（DFA校验）
     * @param content 检测内容
     * @return ResponseResult<Boolean>
     */
    ResponseResult<Boolean> checkContent(String content);
}
